package algoWing42.modelo;


public abstract class Disparo extends ObjetoDinamico {
    /**
	 * 
	 */
	private static final long serialVersionUID = 5473112502574683364L;
	protected boolean disparadoPorJugador;
    protected int danio;

    public Disparo(int x, int y, int radio, boolean disparadoPorElJugador) {
        super(x, y, radio);

        this.disparadoPorJugador = disparadoPorElJugador;
        if (disparadoPorJugador) {
            this.moverEnDireccion(0, -1); //Ubica adelante o atras de quien dispare.
        } else {
            this.moverEnDireccion(0, 1);
        }
    }

    @Override
    public void colisionCon(ObjetoDinamico objeto) {
        ((Avion)objeto).colisionConDisparo(this); //Solo aviones van a estar colisionando con disparos
        this.destruir();
    }

    /**
     * Metodo de dispatch versus el jugador.
     */
    public void colisionConJugador(AvionJugador jugador) {
        jugador.colisionConDisparo(this);
        this.destruir();
    }

    public int getDanio() {
        return danio;
    }
    
    public boolean disparadoPorJugador() {
    	return disparadoPorJugador;
    }
    
    /**
     * No se redefine vivir porque los disparos viven
     * igual que ObjetoDinamico.
     */
}
